#ifndef CUSTOMER_HH
#define CUSTOMER_HH

#include <string>
#include <memory>
#include "BankAccount.hh"

namespace BankingSystem {

class Customer {
private:
    std::string name;                           // Customer's name
    std::unique_ptr<SavingsAccount> savingsAccount;    // Savings account
    std::unique_ptr<CheckingAccount> checkingAccount;  // Checking account

public:
    Customer(const std::string& customerName, const std::string& savingsId, const std::string& checkingId);
    ~Customer() = default;

    // Getters
    std::string getName() const { return name; }
    SavingsAccount* getSavingsAccount() const { return savingsAccount.get(); }
    CheckingAccount* getCheckingAccount() const { return checkingAccount.get(); }

    // Reporting
    bool generateReport(const std::string& filename) const;
};

} // namespace BankingSystem

#endif // CUSTOMER_HH